"""
自己编写的python脚本，用于实现sku商品详情页静态化
"""

import os,sys
# 把django的外层目录加入导包路径
# os.path.abspath(__file__) --> /Users/weiwei/Desktop/meiduo_mall_sz43/meiduo_mall/scripts/regenerate_detail_html.py
# os.path.dirname(os.path.abspath(__file__)) --> /Users/weiwei/Desktop/meiduo_mall_sz43/meiduo_mall/scripts/
# os.path.dirname(os.path.dirname(os.path.abspath(__file__))) --> /Users/weiwei/Desktop/meiduo_mall_sz43/meiduo_mall/
sys.path.insert(
    0,
    os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
)
# 手动加载django环境
# (1)、指定django配置文件导包路径
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo_mall.settings.dev')
# (2)、调用setup函数加载
import django
django.setup()

from django.template import loader
from django.conf import settings
from goods.models import SKU
from contents.utils import get_categories
from goods.utils import get_breadcrumb,get_goods_and_spec

# 生成静态详情页
# 功能：生成指定sku商品的静态化页面
# :param sku: sku商品对象
# :return: 无
def generate_static_sku_detail_html(sku):

    categories = get_categories()
    breadcrumb = get_breadcrumb(sku.category.id)
    goods,sku,specs = get_goods_and_spec(sku.id)

    # 1、构建模版参数
    context = {
        'categories': categories,  # 渲染分类
        'breadcrumb': breadcrumb,  # 渲染导航
        'goods': goods,  # 商品价格等信息
        'sku': sku,  # 商品价格等信息
        'specs': specs,  # 商品规格信息
    }

    # 2、获取模版对象
    template = loader.get_template('detail.html')

    # 3、渲染完整的html页面数据
    content = template.render(context)

    # 4、保存成静态html文件
    # /Users/weiwei/Desktop/meiduo_mall_sz43/front_end_pc/goods/1.html
    # prefix = /Users/weiwei/Desktop/meiduo_mall_sz43/
    prefix = os.path.dirname(os.path.dirname(settings.BASE_DIR))
    file_path = os.path.join(prefix, 'front_end_pc/goods/%d.html'%sku.id)
    with open(file_path, 'w') as f:
        f.write(content)


if __name__ == '__main__':
    # 编写测试代码
    skus = SKU.objects.all()
    for sku in skus:
        generate_static_sku_detail_html(sku)